package model

import (
	"manager/model/entity"
)

// VoiceNodeCreateRequest 创建现场数据
type VoiceNodeCreateRequest struct {
	Name string `json:"name"`

	SeriesType int64 `json:"series_type"`

	VoiceId int64 `json:"voice_id"`

	UpdatedAt int64 `json:"updated_at"`
}

// VoiceNodeUpdateRequest 更新现场数据
type VoiceNodeUpdateRequest struct {
	Id int64 `json:"id"`

	Name *string `json:"name"`

	SeriesType *int64 `json:"series_type"`

	VoiceId *int64 `json:"voice_id"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// VoiceNodeListRequest 列表现场数据
type VoiceNodeListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	Name *string `json:"name"`

	SeriesType *int64 `json:"series_type"`

	VoiceId *int64 `json:"voice_id"`

	UpdatedAt *int64 `json:"updated_at"`
}

// VoiceNodeListResponse 列表回包数据
type VoiceNodeListResponse struct {
	Total int              `json:"total"`
	List  []*VoiceNodeInfo `json:"list"`
}

// VoiceNodeInfoRequest 列表现场数据
type VoiceNodeInfoRequest struct {
	Id int64 `json:"id"`

	Name *string `json:"name"`

	SeriesType *int64 `json:"series_type"`

	VoiceId *int64 `json:"voice_id"`

	UpdatedAt *int64 `json:"updated_at"`
}

// VoiceNodeInfo 详细数据
type VoiceNodeInfo struct {
	Id int64 `json:"id"`

	Name string `json:"name"`

	SeriesType int64 `json:"series_type"`

	VoiceId int64 `json:"voice_id"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// VoiceNodeDeleteRequest 删除现场数据
type VoiceNodeDeleteRequest struct {
	Id int64 `json:"id"`
}

// VoiceNodesEntityToDto entity数据转换
func VoiceNodesEntityToDto(voiceNodes []*entity.VoiceNode) []*VoiceNodeInfo {
	out := make([]*VoiceNodeInfo, 0, len(voiceNodes))
	for _, c := range voiceNodes {
		out = append(out, VoiceNodeEntityToDto(c))
	}
	return out
}

// VoiceNodeEntityToDto entity数据转换
func VoiceNodeEntityToDto(e *entity.VoiceNode) *VoiceNodeInfo {
	return &VoiceNodeInfo{

		Id: e.Id,

		Name: e.Name,

		SeriesType: e.SeriesType,

		VoiceId: e.VoiceId,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
